package ar.com.arkios.kfconTraductor;

import ar.com.arkios.kfcon4d.Connection4D;
import ar.com.arkios.kfcon4d.dao.CalibreDAO;
import ar.com.arkios.kfcon4d.dao.CodigoEANDAO;
import ar.com.arkios.kfcon4d.dao.ContramarcaDAO;
import ar.com.arkios.kfcon4d.dao.EmbalajeDAO;
import ar.com.arkios.kfcon4d.dao.EnvaseDAO;
import ar.com.arkios.kfcon4d.dao.EspecieDAO;
import ar.com.arkios.kfcon4d.dao.LeyendaEtiquetaDAO;
import ar.com.arkios.kfcon4d.dao.LoteDAO;
import ar.com.arkios.kfcon4d.dao.OrdenDAO;
import ar.com.arkios.kfcon4d.dao.PesoStandarDAO;
import ar.com.arkios.kfcon4d.dao.VariedadDAO;
import ar.com.arkios.kfconmodelo.modelo.Almacen;
import ar.com.arkios.kfconmodelo.modelo.Calibre;
import ar.com.arkios.kfconmodelo.modelo.CodigoEAN;
import ar.com.arkios.kfconmodelo.modelo.Contramarca;
import ar.com.arkios.kfconmodelo.modelo.Embalaje;
import ar.com.arkios.kfconmodelo.modelo.Envase;
import ar.com.arkios.kfconmodelo.modelo.Especie;
import ar.com.arkios.kfconmodelo.modelo.LeyendaEtiqueta;
import ar.com.arkios.kfconmodelo.modelo.Lote;
import ar.com.arkios.kfconmodelo.modelo.Orden;
import ar.com.arkios.kfconmodelo.modelo.PesoStandar;
import ar.com.arkios.kfconmodelo.modelo.Variedad;
import ar.com.arkios.kfconsap.conexion.SAPConnection;
import ar.com.arkios.kfconsap.rfc.ContramarcaReadRFC;
import ar.com.arkios.kfconsap.rfc.DatosCentroReadRFC;
import ar.com.arkios.kfconsap.rfc.EANReadRFC;
import ar.com.arkios.kfconsap.rfc.EnvaseReadRFC;
import ar.com.arkios.kfconsap.rfc.EspecieReadRFC;
import ar.com.arkios.kfconsap.rfc.EtiquetaReadRFC;
import ar.com.arkios.kfconsap.rfc.LotesCentrosReadRCF;
import ar.com.arkios.kfconsap.rfc.PesoStandarReadRFC;
import ar.com.arkios.kfconsap.rfc.VariedadReadRFC;
import ar.com.arkios.j4d.opException;
import java.io.IOException;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Ale
 * @version 1.01
 * Clase para probar las Bajadas de SAP a 4D
 */

public class MainTestBajadas {

    public static void main(String [] args){
        try {
           saveEspecies4D(getEspeciesSAP());
           saveVariedad4D(getVariedadesSAP());
           saveEnvases4D(getEnvasesSAP());
           saveContramarcas4D(getContramarcasSAP());
           saveEtiquetas4D(getEtiquetasSAP());
           saveEANCodigo4D(getEANCodigosSAP());
           savePesos4d(getPesosSAP());
           readTablesWithParams();
           saveLotes4D(getLotesSAP());
            
            
        } catch (opException ex) {
            Logger.getLogger(MainTestBajadas.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IOException ex) {
            Logger.getLogger(MainTestBajadas.class.getName()).log(Level.SEVERE, null, ex);
        }catch (Exception ex) {
            Logger.getLogger(MainTestBajadas.class.getName()).log(Level.SEVERE, null, ex);        
        }finally{
            try {
                SAPConnection.getInstance().close();
                Connection4D.getInstance().closeConnection();
            }catch (Exception ex){
                Logger.getLogger(MainTestBajadas.class.getName()).log(Level.SEVERE, null, ex);
                //Otros Varios
            }
        }
    }  
    private static List<Contramarca> getContramarcasSAP() throws IOException, Exception{
            ContramarcaReadRFC aContramarcaReadRFC = new ContramarcaReadRFC();
            aContramarcaReadRFC.executeFunction();            
            aContramarcaReadRFC.getMyContramarcaDAO().findAll();
            return aContramarcaReadRFC.getMyContramarcaDAO().getMisContramarcas();    
    }
    private static void saveContramarcas4D(List <Contramarca> misContramarcas) throws opException{
            ContramarcaDAO miContramarcaDAO = new ContramarcaDAO();
            miContramarcaDAO.saveAll(misContramarcas);
    }
    private static List<Especie> getEspeciesSAP() throws IOException, Exception{
        EspecieReadRFC aEspecieReadRFC = new EspecieReadRFC();
        aEspecieReadRFC.executeFunction();
        aEspecieReadRFC.getEspecieDAO().findAll();
        return aEspecieReadRFC.getEspecieDAO().getMisEspecies();    
    }private static void saveEspecies4D(List <Especie> misEspecies) throws opException{
        EspecieDAO aEspecieDAO = new EspecieDAO();
        aEspecieDAO.saveAll(misEspecies);
    }
    private static List <CodigoEAN> getEANCodigosSAP() throws IOException, Exception{
        EANReadRFC aReadRFC = new EANReadRFC();
        aReadRFC.executeFunction();
        aReadRFC.getMyEANCodigoDAO().findAll();
        return aReadRFC.getMyEANCodigoDAO().getMisCodigosEAN();
    }
    private static void saveEANCodigo4D(List <CodigoEAN> misCodigosEAN) throws opException{
        CodigoEANDAO aCodigoEANDAO = new CodigoEANDAO();
        aCodigoEANDAO.saveAll(misCodigosEAN);
    }
    private static List <Envase> getEnvasesSAP() throws IOException, Exception{
        EnvaseReadRFC aEnvaseReadRFC = new EnvaseReadRFC();
        aEnvaseReadRFC.executeFunction();
        aEnvaseReadRFC.getMyEnvaseDAO().findAll();
        return aEnvaseReadRFC.getMyEnvaseDAO().getMisEnvases();
    }
    private static void saveEnvases4D(List <Envase> misEnvases) throws opException{
        EnvaseDAO aEnvaseDAO = new EnvaseDAO();
        aEnvaseDAO.saveAll(misEnvases);
    }
    private static List <LeyendaEtiqueta> getEtiquetasSAP() throws IOException, Exception{
        EtiquetaReadRFC aEtiquetaReadRFC = new EtiquetaReadRFC();
        aEtiquetaReadRFC.executeFunction();
        aEtiquetaReadRFC.getMyTextoEtiquetaDAO().findAll();
        return aEtiquetaReadRFC.getMyTextoEtiquetaDAO().getMisLeyendasEtiquetas();
    }
    private static void saveEtiquetas4D(List <LeyendaEtiqueta> misEtiquetas) throws opException{
        LeyendaEtiquetaDAO aLeyendaEtiquetaDAO = new LeyendaEtiquetaDAO();
        aLeyendaEtiquetaDAO.saveAll(misEtiquetas);
    }
    private static List <Variedad> getVariedadesSAP() throws IOException, Exception{
        VariedadReadRFC aVariedadReadRFC = new VariedadReadRFC();
        aVariedadReadRFC.executeFunction();
        aVariedadReadRFC.getMyVariedadDAO().findAll();
        return aVariedadReadRFC.getMyVariedadDAO().getMisVariedades();
    }
    private static void savePesos4d(List<PesoStandar> pesosSAP) throws opException {
        PesoStandarDAO aPesoStandarDAO = new PesoStandarDAO();
        aPesoStandarDAO.saveAll(pesosSAP);
    }
    private static void saveVariedad4D(List <Variedad> misVariedades) throws opException{
        VariedadDAO aVariedadDAO = new VariedadDAO();
        aVariedadDAO.saveAll(misVariedades);
    }
    private static void readTablesWithParams() throws IOException, Exception, opException{
        DatosCentroReadRFC aDatosCentroReadRFC = new DatosCentroReadRFC();
        aDatosCentroReadRFC.executeFunction();
        aDatosCentroReadRFC.getMyAlmacenDAO().findAll();
        saveAlmacenes4D(aDatosCentroReadRFC.getMyAlmacenDAO().getMisAlmacenes());
        aDatosCentroReadRFC.getMyCalibreDAO().findAll();
        saveCalibres4D(aDatosCentroReadRFC.getMyCalibreDAO().getMisCalibres());
        aDatosCentroReadRFC.getMyEmbalajeDAO().findAll();
        saveEmbalaje4D(aDatosCentroReadRFC.getMyEmbalajeDAO().getMisEmbalajes());
        aDatosCentroReadRFC.getMyOrdenDAO().findAll();
        saveOrdenes4D(aDatosCentroReadRFC.getMyOrdenDAO().getMisOrdenes());
    }
    private static void saveAlmacenes4D(List <Almacen> misAlmacenes) throws opException{
        ar.com.arkios.kfcon4d.dao.AlmacenDAO almacenDAO = new ar.com.arkios.kfcon4d.dao.AlmacenDAO();
        almacenDAO.saveAll(misAlmacenes);
    }
    private static void saveCalibres4D(List <Calibre> misCalibres) throws opException{
        CalibreDAO aCalibreDAO = new CalibreDAO();
        aCalibreDAO.saveAll(misCalibres);
    }
    private static void saveEmbalaje4D(List<Embalaje> misEmbalajes) throws opException {
        EmbalajeDAO aEmbalajeDAO = new EmbalajeDAO();
        aEmbalajeDAO.saveAll(misEmbalajes);
    }
    private static void saveOrdenes4D(List <Orden> misOrdenes) throws opException{
        OrdenDAO aOrdenDAO = new OrdenDAO();
        aOrdenDAO.saveAll(misOrdenes);
    }
    private static List <PesoStandar> getPesosSAP() throws IOException, Exception{
        PesoStandarReadRFC aPesoStandarReadRFC = new PesoStandarReadRFC();
        aPesoStandarReadRFC.executeFunction();
        aPesoStandarReadRFC.getMyPesoStandarDAO().findAll();
        return aPesoStandarReadRFC.getMyPesoStandarDAO().getMisPesosStandar();
    }
    private static List <Lote> getLotesSAP() throws IOException, Exception{
        LotesCentrosReadRCF aLotesCentrosReadRCF = new LotesCentrosReadRCF();
        aLotesCentrosReadRCF.executeFunction();
        aLotesCentrosReadRCF.getMyLoteDAO().findAll();
        return aLotesCentrosReadRCF.getMyLoteDAO().getMisLotes();
    }
    private static void saveLotes4D(List <Lote> misLotes) throws opException {
        LoteDAO aLoteDAO = new LoteDAO();
        aLoteDAO.saveAll(misLotes);
    }
}
